#include "widgetOptions.h"
#include "window.h"

#include <QtGui/QCheckBox>
#include <QtGui/QDialogButtonBox>
#include <QtGui/QFormLayout>
#include <QtGui/QGroupBox>
#include <QtGui/QHBoxLayout>
#include <QtGui/QLineEdit>
#include <QtGui/QPushButton>
#include <QtGui/QRadioButton>
#include <QtGui/QVBoxLayout>

WidgetOptions::WidgetOptions(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f) {
    //setMinimumSize(150, 300);
    setWindowModality(Qt::ApplicationModal);
    setWindowTitle(tr("Options solo"));

    // Nb de joueurs
    trois = new QRadioButton ("3 Joueurs", this);
    quatre = new QRadioButton ("4 Joueurs", this);
    quatre->setChecked(true);
    cinq = new QRadioButton ("5 Joueurs", this);
    QGroupBox *groupeNbJoueurs = new QGroupBox ();
    QFormLayout *layoutNbJoueurs = new QFormLayout ();
    layoutNbJoueurs->addRow(trois);
    layoutNbJoueurs->addRow(quatre);
    layoutNbJoueurs->addRow(cinq);
    groupeNbJoueurs->setLayout(layoutNbJoueurs);
    groupeNbJoueurs->setTitle("Nombre de joueurs");

    /* Modes de calculs */
    // Enchère: Pouce
    avec = new QRadioButton ("Avec", this);
    sans = new QRadioButton ("Sans", this);
    sans->setChecked(true);
    QGroupBox *groupePouce = new QGroupBox ();
    QFormLayout *layoutPouce = new QFormLayout ();
    layoutPouce->addRow(avec);
    layoutPouce->addRow(sans);
    groupePouce->setLayout(layoutPouce);
    groupePouce->setTitle("Pouce");

    /* Noms des joueurs */
    QGroupBox *groupeNoms = new QGroupBox();
    QFormLayout *layoutNoms = new QFormLayout();
    m_nomJoueur = new QLineEdit();
    m_nomJoueur2 = new QLineEdit();
    m_nomJoueur3 = new QLineEdit();
    m_nomJoueur4 = new QLineEdit();
    m_nomJoueur5 = new QLineEdit();
    layoutNoms->addRow("Votre nom:", m_nomJoueur);
    layoutNoms->addRow("Nom du joueur 2:", m_nomJoueur2);
    layoutNoms->addRow("Nom du joueur 3:", m_nomJoueur3);
    layoutNoms->addRow("Nom du joueur 4:", m_nomJoueur4);
    layoutNoms->addRow("Nom du joueur 5:", m_nomJoueur5);
    groupeNoms->setLayout(layoutNoms);
    groupeNoms->setTitle("Noms des joueurs");

    // Boutons d'usages
    m_buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this);

    QHBoxLayout *layout2 = new QHBoxLayout();
    layout2->addWidget(groupeNbJoueurs);
    layout2->addWidget(groupePouce);

    QVBoxLayout *layout = new QVBoxLayout(this);
    layout->insertLayout(0, layout2);
    layout->addWidget(groupeNoms);
    layout->addWidget(m_buttonBox);

    m_nomJoueur->setText("Vous");
    m_nomJoueur2->setText("Roger");
    m_nomJoueur3->setText("Georges");
    m_nomJoueur4->setText("Johnia");
    m_nomJoueur5->setText("Pilippe");

    controlOptions();

    connect(m_buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
    connect(m_buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
    connect(m_buttonBox, SIGNAL(accepted()), this, SLOT(sendOptions()));
    connect(trois, SIGNAL(toggled(bool)), this, SLOT(controlOptions()));
    connect(quatre, SIGNAL(toggled(bool)), this, SLOT(controlOptions()));
    connect(cinq, SIGNAL(toggled(bool)), this, SLOT(controlOptions()));
}

void WidgetOptions::sendOptions() {
    bool pouceOp = false;

    QStringList nomJoueurs;
    nomJoueurs.append(m_nomJoueur->text());
    nomJoueurs.append(m_nomJoueur2->text());
    nomJoueurs.append(m_nomJoueur3->text());

    if(quatre->isChecked() == true)
        nomJoueurs.append(m_nomJoueur4->text());
    else
        if(cinq->isChecked() == true)
            nomJoueurs.append((m_nomJoueur5->text()));

    if(avec->isChecked() == true)
        pouceOp = true;
    else
        pouceOp = false;

    // TODO: récupérer les informations et les stocker je ne sais où (attendre la (re?)conception
    ((Window*)parent())->nouvellePartieSolo(nomJoueurs, pouceOp);

    close();
}

void WidgetOptions::controlOptions() {
    if (trois->isChecked()) {
        m_nomJoueur4->setDisabled(true);
        m_nomJoueur5->setDisabled(true);
    } else if (quatre->isChecked()) {
        m_nomJoueur4->setEnabled(true);
        m_nomJoueur5->setDisabled(true);
    } else {
        m_nomJoueur4->setEnabled(true);
        m_nomJoueur5->setEnabled(true);
    }
}
